#!/usr/bin/env python
# -*- coding: utf-8 -*-
from BeautifulSoup import *
import urllib2
import re
import time
from Linia import *

str_glowna= 'http://www.ztm.waw.pl'

class Net:
    def __init__(self):
        self.address= ""
    def open_link(self, site ):
        print "Otwieranie linku: ", site
        self.address= site
        link_content= urllib2.urlopen(site)
        return link_content
#parser ogarnia linki na wszystkich stronach
class BS_parser:
    def __init__(self, link):
        self.soup= BeautifulStoneSoup(link)
    def znajdz_linki(self, typ="wszystkie"):
        links=self.soup.findAll('a')
        if typ is "wszystkie":
            print "Pobieranie wszystkich linków na stronie..."
        elif typ is "glowne":
            print "Pobieranie linków głównych..."
            for link in links:
                stringed= str(link)
                if('title' in stringed) and (not 'exe' in stringed):
                    if 'szukaj wg linii' in stringed:
                        linie_linki= link['href']
                    elif 'szukaj z przystanku' in stringed:
                        przystanki_linki= link['href']
            ret_links= (linie_linki, przystanki_linki)
            links= ret_links
        elif typ is "linie":
            print "Pobieranie linków do wszystkich linii na stronie..."
            ret_list= []
            for link in links:
                string= str(link)
                if re.search("[^.\w]linia[^.]", string):
                    linia_link= link['href']
                    linia_numer= link['title']
                    linia_dict= {linia_numer.split()[0]: linia_link }
                    print "DEBUG: ", linia_dict
                    ret_list.append(linia_dict)
            links= tuple(ret_list)    
        return links

def pobierz_info():
    gl= Net()
    zaw_glownej= gl.open_link(str_glowna)
    parser_glownej= BS_parser(zaw_glownej)
    linki_glowne= parser_glownej.znajdz_linki("glowne")
    print linki_glowne[0]
    print linki_glowne[1]
    return (linki_glowne[0], linki_glowne[1])
def pobierz_linie(link_do_str):
    gl= Net()
    zawartosc= gl.open_link(link_do_str)
    parser= BS_parser(zawartosc)
    linki_linii= parser.znajdz_linki("linie")
    lista_linii= []
    for linia_dict in linki_linii:
        numer= linia_dict.keys()
        numer= str(numer[0])
        linia= Linia(numer)
        linia.set_link(linia_dict[numer])
        lista_linii.append(linia)
    return lista_linii
#jeśli nr linii to '0' to wszystkie 
def pobierz_przstanki(lista, nr_linii='0'):
    if nr_linii is '0':
        print "Pobieranie wszystkich przystanków, do wszystkich linii..."
        for element in lista:
            print "Przetwarzanie ", element.get_numer()
            p= Net()
            zaw_p= p.open_link(element.get_link())
            parser_p= BS_parser(zaw_p)
            
    
    
    